(define t1
  (localrec-syntax or (lambda (exp env)
			;; ((or) #f)
			;; ((or e) e)
			;; ((or e1 e2 ...)
			;;  (let ((temp e1))
			;;    (if temp
			;;        temp
			;;        (or e2 ...))))
			;;
			(if (null? (syn-cdr exp))
			    (syntax-quote #f)
			    (if (null? (syn-cdr (syn-cdr exp)))
				(syn-car (syn-cdr exp))
				(let ((e1 (syn-car (syn-cdr exp)))
				      (e2s (syn-cdr (syn-cdr exp))))
				  (let ((temp (syntax-quote temp)))
				    (list (syntax-quote let)
					  (list (list temp
						      e1))
					  (list (syntax-quote if)
						temp
						temp
						(cons (syntax-quote or) e2s))))))))
		   (print (let ((x #f)
				(y 7)
				(temp 8)
				(let odd?)
				(if even?))
			    (or x
				(let temp)
				(if y)
				y)))))
					;                =>  7

;; (define t1 (print (let ((x117321 #f)
;; 			(y117322 7)
;; 			(temp117323 8)
;; 			(let117324 odd?)
;; 			(if117325 even?))
;; 		    (let ((temp117326 x117321))
;; 		      (if temp117326
;; 			  temp117326
;; 			  (let ((temp117327 (let117324 temp117323)))
;; 			    (if temp117327
;; 				temp117327
;; 				(let ((temp117328 (if117325 y117322)))
;; 				  (if temp117328
;; 				      temp117328
;; 				      y117322)))))))))
